#!/bin/bash

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

readfile='../docs/content/querying/sql.md'
writefile='lib/sql-function-doc.ts'

> "$writefile"

cat > "$writefile" <<- EOM
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// This file is auto generated and should not be modified

export interface FunctionDescription {
  syntax: string;
  description: string;
}

/* tslint:disable */
export const SQLFunctionDoc: FunctionDescription[] = [
EOM

isFunction=false

while read -r line; do
    if [[ $line =~ ^###.*functions$ ]]; then
        isFunction=true
    elif [[ $line =~ ^## ]] ; then
        isFunction=false
    elif [[ $isFunction == true ]]; then
        if [[ $line =~ \|\`.*\`\|.*\| ]]; then
            syntax=$(echo $line | grep -o '|`.*`|')
            syntax=${syntax:2:${#syntax}-4}
            syntax=${syntax//\\/}
            description=$(echo $line | grep -o '`|.*.|')
            description=${description//\"/\'}
            description=${description:2:${#description}-4}
            echo -e "  {" >> "$writefile"
            echo -e "    syntax: \"$syntax\"," >> "$writefile"
            echo -e "    description: \"$description\"" >> "$writefile"
            echo -e "  }," >> "$writefile"
        fi
    fi
done < "$readfile"

echo -e '];' >> "$writefile"
